package Inteligencia;


import Juego.*;
import TDALista.BoundaryViolationException;
import TDALista.DoubleLinkedList;
import TDALista.EmptyListException;
import TDALista.InvalidPositionException;
import TDALista.Position;
import TDALista.PositionList;
import TDAPila.EmptyStackException;
import TDAPila.LinkedStack;
import TDAPila.Stack;
import Naves.NavesEnemiga;
import PowerUps.*;

public class powerAI extends Thread {
	protected Gui juego;
	
	public powerAI(Gui g){
		juego=g;
	}
	
	public void run() {
		Stack<Position<PowerUpGenerico>> powerupseliminar=new LinkedStack<Position<PowerUpGenerico>>();
		while(juego.getUsuario().EstaVivo()){
			
			try {
				Thread.sleep(50);
			} catch (InterruptedException e) {}
		
			/**PARA CADA ENEMIGO DE LA LISTA DE ENEMIGOS DEL JUEGO, SI ESTA VIVO, LA MUEVE SEGUN LOS PARAMETROS ESTABLECIDOS.*/	
			for(Position<PowerUpGenerico> p:juego.getListaPowerUps()){
				if(p.element().agarropowerup(juego.getUsuario())){
					p.element().modificarNave();
					juego.actualizarporpower();
					powerupseliminar.push(p);}
				else{
				p.element().Mover();}
				if (p.element().getLocation().getY()==juego.getHeight()){
					powerupseliminar.push(p);
				}
			}

	
	/** BUCLE PARA EVITAR CONFLICTO ENTRE HILOS*/
		while(!powerupseliminar.isEmpty())
			try{
			juego.EliminarPowerUp(powerupseliminar.pop());
			}catch(EmptyStackException e){}					
		}			
						
	}
}
			